# -*- coding: utf-8 -*-
"""
@Time ： 2022/4/25 16:32
@Auth ： 龙龙
"""
import typing

'''第五周作业
1、有一个列表，里面装着很多用户的评论，为了页面正常展示，需要将所有的超过一定长度(假设超过 10 个字符)
的评论用省略号替代，写出一个 add_ellipsis 函数来实现

2、有一个元组，里面装着很多用户的评论，为了页面正常展示，需要将所有的超过一定长度(假设超过 10 个字符)
的评论用省略号替代，写出一个 add_ellipsis 函数来实现'''


def add_ellipsis(comments: typing.List[str], max_length: int = 10):
    """如果评论列表里的内容超过 max_length，剩下的字符用省略号代替
    """
    index = 0
    for comment in comments:
        comment = comment.strip()  # 方法用于移除字符串头尾指定的字符（默认为空格或换行符）或字符序列。
        if len(comment) > max_length:
            comments[index] = comment[:max_length] + '...'
        index += 1
    return comments


comments = [
    "你好呀!你会在哪里呀!呀呀呀呀呀呀呀呀呀呀呀呀",
    "Changed",
    "ABC for generator",
]
print("\n".join(add_ellipsis(comments)))
# OUTPUT:
# Implementati...
# Changed
# ABC for gene...

print('===============================')


def add_ellipsis_gen(comments: typing.Iterable[str], max_length: int = 10):
    """如果可迭代评论里的内容超过 max_length，剩下的字符用省略号代替
    """
    for comment in comments:
        comment = comment.strip()
        if len(comment) > max_length:
            yield comment[:max_length] + '...'
        else:
            yield comment


print("\n".join(add_ellipsis_gen(comments)))

# 处理放在元组里的评论
comments = ("Implementation note", "Changed", "ABC for generator")
print("\n".join(add_ellipsis_gen(comments)))

# 处理放在文件里的评论
# with open("comments") as fp:
#     for comment in add_ellipsis_gen(fp):
#         print(comment)


# 完成的不错
